#!/bin/bash

# 修复IO优化服务的脚本
# 作者: Craft
# 日期: 2025/8/21
# 描述: 此脚本将修复IO优化服务到系统分区，解决重启后服务未启动的问题

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查是否以root权限运行
if [[ $EUID -ne 0 ]]; then
   echo -e "${RED}此脚本需要root权限运行${NC}"
   echo "请使用 sudo $0 重新运行"
   exit 1
fi

echo -e "${BLUE}===== IO优化服务修复 =====${NC}"
echo "此脚本将修复IO优化服务到系统分区，解决重启后服务未启动的问题"
echo

# 获取脚本目录
SCRIPT_DIR="$(dirname "$(readlink -f "$0")")"
SCRIPT_PATH="${SCRIPT_DIR}/io-optimizer.sh"
SERVICE_PATH="${SCRIPT_DIR}/io-optimizer.service"

# 检查脚本和服务文件是否存在
if [ ! -f "$SCRIPT_PATH" ]; then
    echo -e "${RED}错误: IO优化脚本不存在: $SCRIPT_PATH${NC}"
    exit 1
fi

if [ ! -f "$SERVICE_PATH" ]; then
    echo -e "${RED}错误: 服务文件不存在: $SERVICE_PATH${NC}"
    exit 1
fi

# 停止现有服务
echo -e "${BLUE}[1/6] 停止现有服务...${NC}"
systemctl stop io-optimizer.service 2>/dev/null
echo -e "${GREEN}✓ 服务已停止${NC}"

# 设置脚本执行权限
echo -e "${BLUE}[2/6] 设置脚本执行权限...${NC}"
chmod +x "$SCRIPT_PATH"
echo -e "${GREEN}✓ 脚本执行权限已设置${NC}"

# 复制脚本到系统分区
echo -e "${BLUE}[3/6] 复制脚本到系统分区...${NC}"
# 创建opt目录（如果不存在）
mkdir -p /opt/ohmylinux
SYSTEM_SCRIPT_PATH="/opt/ohmylinux/io-optimizer.sh"
cp "$SCRIPT_PATH" "$SYSTEM_SCRIPT_PATH"
chmod +x "$SYSTEM_SCRIPT_PATH"
echo -e "${GREEN}✓ 脚本已复制到系统分区: $SYSTEM_SCRIPT_PATH${NC}"

# 复制服务文件到systemd目录
echo -e "${BLUE}[4/6] 安装systemd服务...${NC}"
# 创建一个临时文件，替换服务文件中的脚本路径为系统分区中的路径
sed "s|ExecStart=.*|ExecStart=/bin/bash \"$SYSTEM_SCRIPT_PATH\"|g" "$SERVICE_PATH" > /tmp/io-optimizer.service
cp /tmp/io-optimizer.service /etc/systemd/system/
rm /tmp/io-optimizer.service
echo -e "${GREEN}✓ 服务文件已复制并更新脚本路径${NC}"

# 重新加载systemd配置
echo -e "${BLUE}[5/6] 重新加载systemd配置...${NC}"
systemctl daemon-reload
echo -e "${GREEN}✓ systemd配置已重新加载${NC}"

# 启用并启动服务
echo -e "${BLUE}[6/6] 启用并启动服务...${NC}"
systemctl enable io-optimizer.service
systemctl start io-optimizer.service

# 检查服务状态
if systemctl is-active --quiet io-optimizer.service; then
    echo -e "${GREEN}✓ IO优化服务已成功启动${NC}"
else
    echo -e "${RED}✗ IO优化服务启动失败${NC}"
    echo "请检查日志: journalctl -u io-optimizer.service"
    exit 1
fi

echo
echo -e "${GREEN}===== IO优化服务修复完成 =====${NC}"
echo "服务已设置为开机自动启动"
echo "您可以使用以下命令管理服务:"
echo "  启动服务: sudo systemctl start io-optimizer.service"
echo "  停止服务: sudo systemctl stop io-optimizer.service"
echo "  禁用服务: sudo systemctl disable io-optimizer.service"
echo "  查看状态: sudo systemctl status io-optimizer.service"
echo
echo -e "${YELLOW}注意: 如果您更新了IO优化脚本，需要重新运行此修复脚本${NC}"
echo -e "${YELLOW}脚本已安装到系统分区: $SYSTEM_SCRIPT_PATH${NC}"